﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TheBullysStore.Models;
using System.Json;
using log4net;
using TheBullysStore.Models.ModuloAdministracion.Mantenible;
using TheBullysStore.Controllers.ModuloServicios;
using TheBullysStore.Models.ModuloAdministracion.Mantenible;
using TheBullysStore.Models.ModuloAdministracion.AreaComun;
//using TheBullysStore.Models.ModuloAdministracion.TipoMantenible;
using TheBullysStore.Models.ModuloAdministracion.Edificio;

namespace TheBullysStore.Controllers.ModuloAdministracion
{
    public class MantenibleController : Controller
    {
        //
        // GET: /Mantenible/
        private static ILog log = LogManager.GetLogger(typeof(MantenibleController));
        private TheBullysStoreDB db = new TheBullysStoreDB();
        MantenibleFacade mantenibleFacade = new MantenibleFacade();
        //TipoMantenibleFacade tipomantenibleFacade = new TipoMantenibleFacade();
        EdificioFacade edificioFacade = new EdificioFacade();
        EdificioDAO edificioDAO = new EdificioDAO();
        AreaComunFacade areacomunFacade = new AreaComunFacade();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Mantenible()
        {
            return View();
        }

        public ActionResult RegistrarMantenible()
        {
            return View();
        }

        public ActionResult BuscarMantenible()
        {
            return View();
        }

        [HttpPost]
        public JsonResult registrarMantenible(MantenibleBean mantenible)
        {
            try{
                if (mantenibleFacade.Existemantenible(mantenible))
                {
                    log.Warn("El edificio: \"" + mantenible.Nombre + "\"ya ha sido creado");
                    return Json(new { me = "El edificio ya existe" });
                }

            string conexion = mantenibleFacade.Registrarmantenible(mantenible);

            return Json(new { me = "Se ingreso correctamente" });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }  

        }

        [HttpPost]
        public JsonResult buscarMantenible(MantenibleBean mantenible)
        {
            try{
            List<MantenibleBean> listaMantenible = mantenibleFacade.ListarMantenible(mantenible);

            return Json(new { listaMantenible });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
        }

        [HttpPost]
        public JsonResult eliminarMantenible(MantenibleBean mantenible)
        {
            try{
            string conexion = mantenibleFacade.Eliminarmantenible(mantenible);

            return Json(new { me = "Se eliminó correctamente" });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
            
        }

        //?????????????????????????????????????????????????????modificar????????????????????????????????????????????????????????????????????????????????????????????????????????
        [HttpPost]
        public JsonResult modificarMantenible(MantenibleBean mantenible)
        {
            try{
            string conexion = mantenibleFacade.Modificarmantenible(mantenible);

                //System.Diagnostics.Debug.WriteLine("--------------------------------------_________Prueba5> " + mantenible.conexion);
                return Json(new { me = "Se modificó correctamente " + mantenible.Nombre });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
           
        }

        //[HttpPost]
        //public JsonResult cargarTipoMantenibles(TipoMantenibleBean tipomantenible)
        //{
        //    //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

        //    List<TipoMantenibleBean> listaTipoMantenible = tipomantenibleFacade.ListarTipoMantenible(tipomantenible);

        //    //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

        //    return Json(new { listaTipoMantenible });
        //}

        [HttpPost]
        public JsonResult cargarEdificios(EdificioBean edificio)
        {
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);
            try{
            List<EdificioBean> listaEdificio = edificioFacade.Listaredificio(edificio);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaEdificio });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
        }

        [HttpPost]
        public JsonResult cargarAreaComun(AreaComunBean areacomun)
        {
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);
            try{
            List<AreaComunBean> listaAreaComun = areacomunFacade.Listarareacomun(areacomun);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaAreaComun });
            }
            catch (Exception ex)
            {
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
        }

        [HttpPost]
        public JsonResult setearEdificio(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> llegadaSeteo = edificioDAO.SetearEdificio(edificio);
                return Json(new { llegadaSeteo });
            }
            catch (Exception ex)
            {
                log.Error("setearEdificio - GET(EXCEPTION):", ex);
                return Json(new { llegadaSeteo = "Ocurrió un error al eliminar" });
            }
        }

    }
}
